package com.czk.model.template.improve;

/**
 * @Author:ChenZhangKun
 * @Date: 2020/5/6 20:36
 */

/**'
 * 抽象类
 * 表示豆浆 制作豆浆方法步骤都是固定的，知识其加入配料不同，所以用模板模式
 */
public abstract class SoyaMilk {
    protected boolean isAddConnpnents=true;
    // 模板方法，防止子类覆盖
    final void make(){
        select();
        // 是否添加配料
        if (isAddConnpnents){
            addCondiments();
        }
        soak();
        beat();
    }
    // 选材料
    void select(){
        System.out.println("选择新鲜的黄豆");
    }
    // 添加不同得配料
    abstract void addCondiments();
    //浸泡
    void soak(){
        System.out.println("黄豆和配料浸泡");
    }
    void beat(){
        System.out.println("黄豆在豆浆机中打碎");
    }
    // 钩子函数 作为标志性函数
    void wantAddConponents(){

}
}
